Serial communication is a method of electronic communication in which data is sent consecutively, one bit after the other. Over the years, serial communication has evolved to include a number of different systems and protocols, each with their own advantages and drawbacks. One exemplary serial communication system is a master-slave serial communication system, as illustrated by the serial communication system 10 in FIG. 1. In the serial communication system 10 shown in FIG. 1, a master device 12 initiates communication with one or more slave devices 14 by sending digital data to one or more of the slave devices 14 via a first input/output (IO) pin 16 and a second IO pin 18. A third IO pin 20 provides a supply voltage (VDD) from the master device 12 to each one of the slave devices 14. Together, the connections between the master device 12 and the slave devices 14 form a serial communication bus 22. When three or more devices communicate on the same serial communication bus 22, it is generally necessary to identify for which device data sent over the serial bus is intended. Otherwise, each one of the slave devices 14 may receive and act upon the data simultaneously, which may be undesirable in many situations.
One way to indicate the device for which data on the serial bus is intended is by associating each slave device 14 with a slave identifier (ID), which is hard-coded into a memory of the slave device 14. Data sent over the serial communication bus 22 may then include the slave ID of the slave device 14 for which the data is intended. The slave ID provided in the data is read by each slave device 14 and the data is discarded if it is not intended for the device. While such a method may work for distinct slave devices 14 including unique slave IDs, it fails when two or more of the slave devices 14, and thus their slave IDs, are identical. This may be problematic when the functionality of two identical slave devices 14 is required in a system, as it may require a manufacturer of the slave devices 14 to manufacture variants of identical devices with unique slave IDs, adding both cost and complexity to the manufacturing process.
One way manufacturers have attempted to solve this problem is by providing devices with slave IDs that can be changed, for example, by blowing one or more eFUSES in the device. Unfortunately, implementation costs associated with such a memory system (e.g., size, test time, design complexity) are often prohibitive. In an additional effort to provide devices with unique slave IDs, manufacturers have produced devices that can change their slave ID based on the receipt of a signal at a general purpose IO (GPIO) pin 24 such as that shown on each one of the slave devices 14 in FIG. 2. In the slave devices shown in FIG. 2, the slave ID of each one of the devices may change based on whether or not a signal is applied to the GPIO pin 24. Accordingly, two identical slave devices 14 may be associated with unique slave IDs by providing a signal to the GPIO pin 24 of one of the slave devices 14 but not the other. Although effective, such an approach requires the use of the GPIO pin 24 in addition to the first IO pin 16, the second IO pin 18, and the third IO pin 20. Further, separate signal routing (e.g., via traces on a PCB) is required for the GPIO pin 24 of each slave device 14, thereby adding additional complexity and cost to the serial communication system 10 shown in FIG. 2.
Another way manufacturers have attempted to provide devices with unique slave IDs is by producing devices that can change their slave ID based on the order of signals received by the first IO pin 16 and the second IO pin 18. For example, if a serial data signal is received at the first IO pin 16 before the second IO pin 18, a first slave ID can be used for the device, whereas if a signal is received at the second IO pin 18 before the first IO pin 16, a second slave ID can be used for the device. Signals between the first IO pin 16 of two identical slave devices 14 and the master device 12 can be oppositely routed so that each one of the slave devices 14 are associated with different slave IDs. Unfortunately, provisioning a unique slave ID for each one of the slave devices 14 in this manner makes the slave ID of each one of the slave devices 14 susceptible to noise, as the slave devices 14 necessarily must respond to and latch their respective slave IDs based on signal bursts of a relatively short duration received on the first IO pin 16 and the second IO pin 18 if the serial communication between devices in the serial communication system 10 is to occur at any appreciable speed.
Yet another way many have attempted to satisfy the requirement of unique slave IDs for each slave device 14 is to connect the slave devices 14 in series as shown in FIG. 3. When the slave devices 14 are connected in series as shown in FIG. 3, data must be propagated by each one of the slave devices 14 located before the end destination of the data. While in FIGS. 1 and 2 one of the IO pins used for data typically carries a clock signal and the other carries a serial data signal, in FIG. 3 a clock signal is not used. Although this allows multiple identical slave devices 14 to be used together, the size of the data sent via the serial bus 24 increases proportionally with the number of slave devices 14 used, thereby decreasing the performance of the serial communication system 10.
Accordingly, there is a need for a serial communication device capable of provisioning a unique slave ID with minimal use of additional pins or further infrastructure in a serial communication system.